package com.example.zqr.service;
import com.example.zqr.dto.CartDto;
import com.example.zqr.pojo.Cart;

import java.util.List;
public interface CartService {
    /**
     * 获取所有购物车项的列表。
     *
     * @return 包含所有购物车项的列表。
     */
    List<Cart> listAll();

    /**
     * 创建一个新的购物车项。
     *
     * @param cart 要创建的购物车项。
     * @return 影响的记录数量，为1表示插入成功。
     */
    int create(Cart cart);

    /**
     * 根据购物车项ID更新购物车项。
     *
     * @param carid 购物车项的唯一标识符。
     * @param cart  包含更新信息的购物车项。
     * @return 影响的记录数量，为1表示更新成功。
     */
    int update(String carid, Cart cart);

    /**
     * 根据购物车项ID删除购物车项。
     *
     * @param carid 购物车项的唯一标识符。
     * @return 影响的记录数量，为1表示删除成功。
     */
    int delete(String carid);

    /**
     * 分页获取购物车项列表。
     *
     * @param pageNum  当前页码。
     * @param pageSize 每页显示的记录数。
     * @return 分页后的购物车项列表。
     */
    List<Cart> list(int pageNum, int pageSize);

    /**
     * 根据购物车项ID获取购物车项详情。
     *
     * @param carid 购物车项的唯一标识符。
     * @return 对应ID的购物车项详情。
     */
    Cart get(String carid);

    /**
     * 根据用户ID获取该用户的所有购物车项。
     *
     * @param userid 用户的唯一标识符。
     * @return 该用户的所有购物车项列表。
     */
    List<CartDto> getCartByUser(String userid);

    /**
     * 更新购物车项的数量。
     *
     * @param cart 包含新数量的购物车项。
     * @return 影响的记录数量，为1表示更新成功。
     */
    int updateCartCount(Cart cart);

    /**
     * 根据用户ID删除该用户的所有购物车项。
     *
     * @param userid 用户的唯一标识符。
     * @return 影响的记录数量，为1表示删除成功。
     */
    int deleteUserCart(String userid);
}
